<?php

namespace app\system\controller;

use app\system\model\AuthGroup;
use app\system\model\AuthRule as AuthRuleModel;
use think\facade\View;
use \x_mier\auth\Auth;

class AuthRule extends Base
{
    /**
     * @title   权限
     * @desc    权限描述
     * @author  橘子味的心
     * @version 1.0
     * @method  POST
     * @param   varchar 字段 &nbsp; 字段名 NO
     * @param   int 字段 &nbsp; 字段名 YES
     * @return  int code &nbsp; 返回参数 200/100
     * @return  string message &nbsp; 返回信息 successful
     * @return  array data &nbsp; 返回数据 successful
     */
    public function lst()
    {
        if (request()->isPost()) {
            // $auth = new Auth();
            $data = AuthRuleModel::select(); //查询所有非按钮的栏目
            return tocode(0, 'ok', getTrees($data, 'treeList'));
        }
        return view();
    }
    /**
     * @title   排序
     * @desc    方法描述
     * @author  橘子味的心
     * @version 1.0
     * @method  POST
     * @param   varchar 字段 &nbsp; 字段名 NO
     * @param   int 字段 &nbsp; 字段名 YES
     * @return  int code &nbsp; 返回参数 200/100
     * @return  string message &nbsp; 返回信息 successful
     * @return  array data &nbsp; 返回数据 successful
     */
    public function sort()
    {
        if (request()->isPost()) {
            $sort = input('post.'); //排序接收全部 id
            foreach ($sort as $k => $v) {
                AuthRuleModel::update(['id' => $k, 'sort' => $v]);
            }
            $this->success('更新排序成功！', url('lst'));
            return;
        }
    }
    /**
     * @title   添加提交
     * @desc    方法描述
     * @author  橘子味的心
     * @version 1.0
     * @method  POST
     * @param   varchar 字段 &nbsp; 字段名 NO
     * @param   int 字段 &nbsp; 字段名 YES
     * @return  int code &nbsp; 返回参数 200/100
     * @return  string message &nbsp; 返回信息 successful
     * @return  array data &nbsp; 返回数据 successful
     */
    public function add()
    {
        if (request()->isPost()) {
            $authrule = new AuthRuleModel;
            $data = input('post.');
            if (empty($data)) {
                return tocode(100, '数据不能为空');
            }
            $info = $authrule->info($data);
            if (!$info) {
                return tocode(100, '添加失败');
            }
            cache('rules', '');
            return tocode(200, '添加成功！');
        }
        $auth = new Auth();
        $data = $auth->getRule(); //查询所有非按钮的栏目
        return view('info', ['list' => getTrees($data)]);
    }
    /**
     * @title   修改提交
     * @desc    方法描述
     * @author  橘子味的心
     * @version 1.0
     * @method  POST
     * @param   varchar 字段 &nbsp; 字段名 NO
     * @param   int 字段 &nbsp; 字段名 YES
     * @return  int code &nbsp; 返回参数 200/100
     * @return  string message &nbsp; 返回信息 successful
     * @return  array data &nbsp; 返回数据 successful
     */
    public function edit()
    {
        if (request()->isAjax()) {
            $authrule = new AuthRuleModel;
            $id = input('id');
            if (empty($id)) {
                return tocode(100, 'ID不能为空');
            }
            if (request()->isPost()) {
                $data = input('post.');
                if (empty($data)) {
                    return tocode(100, '数据不能为空');
                }
                $info = $authrule->info($data);
                if (!$info) {
                    return tocode(100, '编辑失败');
                }
                cache('rules', '');
                return tocode(200, '编辑成功！');
            }
            $res = $authrule->getOne($id);
            return tocode(200, 'ok', $res);
        }
        $auth = new Auth();
        $data = $auth->getRule(); //查询所有非按钮的栏目
        return view('info', ['list' => getTrees($data)]);
    }
    /**
     * @title   状态
     * @desc    方法描述
     * @author  橘子味的心
     * @version 1.0
     * @method  POST
     * @param   varchar 字段 &nbsp; 字段名 NO
     * @param   int 字段 &nbsp; 字段名 YES
     * @return  int code &nbsp; 返回参数 200/100
     * @return  string message &nbsp; 返回信息 successful
     * @return  array data &nbsp; 返回数据 successful
     */
    public function status()
    {
        if (request()->isPost()) {
            $id = input('id');
            $status = input('status');
            if (empty($id)) {
                return tocode(100, 'ID不能为空');
            }
            if (empty($status)) {
                $status = 0;
            }
            $authrule = new AuthRuleModel;
            $status = $authrule->status($id, $status);
            if (!$status) {
                return tocode(100, '修改状态失败');
            }
            return tocode(200, '修改状态成功！');
        }
    }
    /**
     * @title   删除单条
     * @desc    删除单条描述
     * @author  橘子味的心
     * @version 1.0
     * @method  POST
     * @param   varchar 字段 &nbsp; 字段名 NO
     * @param   int 字段 &nbsp; 字段名 YES
     * @return  int code &nbsp; 返回参数 200/100
     * @return  string message &nbsp; 返回信息 successful
     * @return  array data &nbsp; 返回数据 successful
     */
    public function del()
    {
        $authrule = new AuthRuleModel;
        if (request()->isAjax()) {
            $id = input('id');
            if (empty($id)) {
                return tocode(100, 'ID不能为空');
            }
            $del = $authrule->del($id);
            if (!$del) {
                return tocode(100, '删除失败');
            }
            return tocode(200, '删除成功！');
        }
    }
    /**
     * @title   批量启用、禁用、删除
     * @desc    批量启用、禁用、删除描述
     * @author  橘子味的心
     * @version 1.0
     * @method  POST
     * @param   varchar 字段 &nbsp; 字段名 NO
     * @param   int 字段 &nbsp; 字段名 YES
     * @return  int code &nbsp; 返回参数 200/100
     * @return  string message &nbsp; 返回信息 successful
     * @return  array data &nbsp; 返回数据 successful
     */
    public function handleAll()
    {
        $ids = input('id');
        $type = input('type', 0);
        if (empty($ids)) {
            return tocode(100, 'ID不能为空');
        }
        if (empty($type)) {
            $type = 0;
        }
        $authgroup = new AuthGroup();
        $all = $authgroup->handleAll($ids, $type);
        switch ($type) {
            case '1':
                $name = '启用';
                break;
            case '2':
                $name = '删除';
                break;
            default:
                $name = '禁用';
                break;
        }
        if (!$all) {
            return tocode(100, $name . '失败');
        }
        return tocode(200, $name . '成功！');
    }
}
